PHP 開発環境で使う Kubernetes
リポジトリ
2019/12/1 12:56
与太話スライドはじまる
普段は大阪で開発
スライドはあとで公開する
2019/12/1 12:59 開始
今日の流れ
本番環境のデプロイの話はしない
PHP開発環境を実際に作る
PHPの開発環境で使うべきかどうか?
今日会場でk8s使ってる人は?
ちょっとだけいるという感じ
k8s、ツールがたくさんあるが、それしかつかわない
読み方はケーツだった気がするが、うそかもしれない
日本人だとケーハチエスとみんないう
k8sとは
とりあえず、doccker composeとかvagrantみたいなものだとおもってよい
「Dockerだけ入ってればいいんでしょ?」→実行環境を別に用意する必要がある
k8sが動く機能が入っている
簡単に試せるので今日もこれ
K8s Objects
クラスタの中にこコンポーネントがいっぱいある。今日使うものに絞って話す
Pod
コンテナをまとめたグループ
Docker containerのラッパーみちたいなもの
例:Phpのpodならこんな感じに作るだろう作るだろう
nginxコンテナ + php-fpm コンテナ
同じpodのなかのコンテナなら通信ができる
実際のyamlをみる
containerの中にimageが複数定義されている
ConfigMap
設定ファイルを格納してる
podはvolumeとしてマウントしてつかう
podでvolumeとしてアタッチして
volumeMountsでファイルシステムにマウントする
「Docker composeだと1行なのに結構いろんなステップが必要」
KV pair
設定ファイルをはるようなイメージ
Service
podでうごくappをserviceとして公開するもの
開発環境として便利なのは
mac上からk8sからpodにアクセスしたい
直接IPたたけない
Service経由でpodにアクセスする
typeがたくさんある。開発に便利なのはLoadBalancer
macのlocalhostとしてserviceにアクセスできるようになる!
これを活用して開発環境を作っていく
ソースはホストに置きたい(mac上のアプリで編集したい)。実行はk8sでやらしたい
つまり、ホストのファイルをマウントしないと便利に使えない。
ここはポイント
設定ファイル(.envとかphpunit.xmlとか)をどうすればよいか?
DBのホストを指定、なにかけばいいの?
Service名を指定すればよい
DB_HAST=sample_db
ホストディレクトリのマウント
podのVolumeでhostPathを指定すると、Podの中でマウントできる
便利じゃんと思うが、ホストのパスを直書きしないといけない!
チームで使う場合は?→悩みどころ。いまのところsedで置換している
Xdebugによるリモートデバッグ
できる(スライド参照)
PHPUnitなどのCLI実行
kubectlを使うとコマンドが実行できる
podのコンテナを指定して、実行コマンドを渡す
PHPStorの連携はない。いまのところターミナルしか叩くしかない
Dockerなあらるけど……
こんなかんじで設定がたくさんあるので面倒。
デモ
クラスターはもう作ってあります
デモ用の拡大鏡が便利そうkadoyau.icon
IntelliJで編集したファイルが反映された
IntelliJのプレゼンモード
で、選ぶべき?
docker-composeと比べると
構築するのに手間がかかる(覚えることを考えると)
dockr composeでimageを
upしたらimageビルドする、みたいな
k8s単体だと、dockerのbuildできない
学習コスト高い
yamlファイルのlinterがあってそれは便利
本番環境がk8sなら導入する必要はない
いまk8sをつかっていても、積極的にはおすすめしない
docker-composeじゃだめ?とか色々考えてそれでもやりたいならGO
今やってるプロジェクト
k8s単体だと辛いのでhelm/helmfileを活用してる
すべての環境を1ソースで構築
環境ごとに要求が違うので、複雑になる
開発環境にしぼるともっと落とせる(docker-composeでもいいかも)
でも楽しいんですよ
焦って使わなくてもいい。でも、次の場合ならk8sよい
学習
docker-composeでは複雑な構成はk8sがよい